//
//  SandboxUnit.m
//  NetworkTaxiDriver
//
//  Created by thinkjoy on 16/9/22.
//  Copyright © 2016年 Thinkjoy_RS. All rights reserved.
//
/*
 * iOS的沙盒机制，应用只能访问自己应用目录下的文件。iOS不像android，没有SD卡概念，不能直接访问图像、视频等内容。iOS应用产生的内容，如图像、文件、缓存内容等都必须存储在自己的沙盒内。默认情况下，每个沙盒含有3个文件夹：Documents, Library 和 tmp。Library包含Caches、Preferences目录。
 * Documents：苹果建议将程序创建产生的文件以及应用浏览产生的文件数据保存在该目录下，iTunes备份和恢复的时候会包括此目录
 * Library：存储程序的默认设置或其它状态信息；
 * Library/Caches：存放缓存文件，保存应用的持久化数据，用于应用升级或者应用关闭后的数据保存，不会被itunes同步，所以为了减少同步的时间，可以考虑将一些比较大的文件而又不需要备份的文件放到这个目录下。
 * tmp：提供一个即时创建临时文件的地方，但不需要持久化，在应用关闭后，该目录下的数据将删除，也可能系统在程序不运行的时候清除。
 */

#import "SandboxUnit.h"

@implementation SandboxUnit

+ (NSString *)getFilePathWithSearchPathDirectory:(RSSearchPathDirectory )SearchPathDirectory fileName:(NSString *)fileName
{
    NSString * path =   nil;
    switch (SearchPathDirectory) {
        case RSSearchPathDirectoryHome:
        {
            path    =   [SandboxUnit dirHome];
        }
            break;
        case RSSearchPathDirectoryDocuments:
        {
            path    =   [SandboxUnit dirDoc];
        }
            break;
        case RSSearchPathDirectoryLibrary:
        {
            path    =   [SandboxUnit dirLib];
        }
            break;
        case RSSearchPathDirectoryTmp:
        {
            path    =   [SandboxUnit dirTmp];
        }
            break;
        case RSSearchPathDirectoryCache:
        {
            path    =   [SandboxUnit dirCache];
        }
            break;
        default:
            break;
    }
    
    NSAssert(path!=nil, @"RSSearchPathDirectory类型出错!");
    return [path stringByAppendingPathComponent:fileName];
}

#pragma mark    获得根目录
+(NSString *)dirHome
{
    NSString *dirHome=NSHomeDirectory();
    return dirHome;
}

//获取Library目录
+(NSString *)dirLib{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
    NSString *libraryDirectory = [paths objectAtIndex:0];
    return libraryDirectory;
}

#pragma mark    获取Documents目录
+(NSString *)dirDoc{
    //[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    return documentsDirectory;
}

//获取Cache目录
+(NSString *)dirCache{
    NSArray *cacPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *cachePath = [cacPath objectAtIndex:0];
    return cachePath;
}

//获取Tmp目录
+(NSString *)dirTmp{
    //[NSHomeDirectory() stringByAppendingPathComponent:@"tmp"];
    NSString *tmpDirectory = NSTemporaryDirectory();
    return tmpDirectory;
}

@end
